/*
 * Middleware
 * Copyright (C) 2010/11
 * Riccardo Pulvirenti, Giuseppe Ravidà, Andrea Tino
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANDABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see http://www.gnu.org/licenses
 */

/*!
 * File: logger.hpp
 */

#ifndef _LOGGER_HPP_
#define _LOGGER_HPP_

#include <iostream>
#include <fstream>
#include <string>
#include <time.h>

//-----------------------------------------------------------------------------
// Class definitions
namespace middleware {
class Logger {
public:
	/*!
	 * Constructor creating a logger (file) with specified name (no extension
	 * should be provided).
	 */
	explicit Logger(std::string logname, std::string logtag);
	/*!
	 * Destructor.
	 */
	~Logger();
	/*!
	 * Printing in log.
	 */
	void Print(std::string logstring);
private:
	/*!
	 * Opens configuration file. If file does not exist (local), then the file
	 * with logname.middleware.log, must be created and opened.
	 */
	void Open();
	/*!
	 * Closes the file
	 */
	void Close();
	/*!
	 * Logging file tag.
	 */
	std::string _log_tag;
	/*!
	 * Logging file name. Path will be local.
	 */
	std::string _log_filename;
	/*!
	 * Logging file
	 */
	std::ofstream _log_file;
};
}

#endif
